package main

import (
	"fmt"
	"time"
)

/*

并发主要由切换时间片来实现“同时”运行，在并行则是直接利用
多核实现多线程的运行，但 Go 可以设置使用核数，以发挥多核计算机
的能力。

Goroutine 奉行通过通信来共享内存，而不是共享内存来通信。

gouroutine其实就是一种协程，类似其他语言中的coroutine， 是在编译器或虚拟机层面上的多任务。
它可以运行在一个或多个线程上，但不同于线程，它是非抢占式的，所以协程很轻量


   @Time : 2018/8/31 16:05 
   @Author : ff
*/
func test(a int) int {
	if a == 0 {
		return a
	}
	return test(a - 1)
}

func main() {
	test2()
}

func test2() {
	for i := 0; i < 1000; i++ {
		go func(ii int) {
			for {
				fmt.Printf("Hello %d\n", ii)
			}
		}(i)
	}
	time.Sleep(time.Millisecond)
}
